package com.iflytek.uc.authentication.handler.impl;

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import org.apache.log4j.Logger;

import com.iflytek.uc.authentication.handler.PasswordEncoder;

public class StandardPasswordEncoder implements PasswordEncoder {

	private static final Logger LOG = Logger.getLogger(StandardPasswordEncoder.class);

	public String encode(String accountName, String password) {
		String md5 = getMD5Str(accountName + ":" + password);
		return md5;
	}

	private String getMD5Str(String str) {
		MessageDigest messageDigest = null;
		try {
			messageDigest = MessageDigest.getInstance("MD5");
			messageDigest.reset();
			messageDigest.update(str.getBytes("UTF-8"));
		}
		catch (NoSuchAlgorithmException e) {
			LOG.error("", e);
			return "n/a";
		}
		catch (UnsupportedEncodingException e) {
			LOG.error("", e);
			return "n/a";
		}
		
		byte[] byteArray = messageDigest.digest();
		StringBuffer md5StrBuff = new StringBuffer();
		for (int i = 0; i < byteArray.length; i++) {
			if (Integer.toHexString(0xFF & byteArray[i]).length() == 1) {
				md5StrBuff.append("0").append(Integer.toHexString(0xFF & byteArray[i]));
			}
			else {
				md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i]));
			}
		}
		
		return md5StrBuff.toString();
	}

}
